package com.bangcommunity.bbframe.sdm.web.taglib;

import com.bangcommunity.bbframe.common.utils.DateUtils;
import com.bangcommunity.bbframe.common.utils.lang.StringUtils;
import org.apache.commons.codec.binary.Base64;
import org.springframework.util.ClassUtils;
import org.springframework.util.ReflectionUtils;

import java.util.Collection;
import java.util.Date;

/**
 * User: joeytang el表达式
 */
public class CustomFunctions {

    public static String base64(String value) {
        return Base64.encodeBase64URLSafeString(value.getBytes());
    }

    /**
     * 判断一个集合中是否包含某元素
     *
     * @param all
     * @param item
     * @return
     */
    public static boolean contains(Collection all, Object item) {
        return all.contains(item);
    }

    /**
     * 判断一个集合中是否包含另一个集合中的任意一个元素.
     *
     * 主要用在权限判断方面
     *
     * @param all
     * @param items
     * @return
     */
    public static boolean containsAny(Collection all, Collection items) {
        for (Object item : items) {
            if (all.contains(item)) {
                return true;
            }
        }
        return false;
    }

    public static Object getVar(String clazz, String var) {
        try {
            Class<?> cls = ClassUtils.resolveClassName(clazz, ClassUtils.getDefaultClassLoader());
            return ReflectionUtils.findField(cls, var).get(clazz);
        } catch (IllegalArgumentException e) {
        } catch (IllegalAccessException e) {
        }
        return null;
    }

    public static String getDate(Long date) {
        return getDate(date,"yyyy-MM-dd HH:mm:ss");
    }
    public static String getDate(Long date, String format) {
        if(null == date){
            return "";
        }
        if(StringUtils.isBlank(format)) {
            format = "yyyyMMddHHmmss" ;
        }
        return DateUtils.format(new Date(date),format);
    }

    public static String enumVal(Enum e) {
        if (null != e) {
            return e.name();
        }
        return null;
    }
}
